import cv2
import numpy as np

if __name__ == '__main__':
    # 直接读取灰度图像,使用参数cv2.IMREAD_GRAYSCALE来读取图像
    gray = cv2.imread('opencv_logo.jpg', cv2.IMREAD_GRAYSCALE)

    # 使用Laplace算子进行边缘检测，cv2.CV_64F是输出图像的深度，通常使用64位浮点数
    laplacian = cv2.Laplacian(gray,cv2.CV_64F)

    # 将结果转换为8位无符号整数，范围在0-255之间，加了这个就很清楚了
    laplacian = cv2.convertScaleAbs(laplacian)

    # 使用Canny算子进行边缘检测，第一个参数是输入图像，第二个和第三个参数是阈值，
    canny = cv2.Canny(gray,100,200)


    # 显示图像
    cv2.imshow('gray', gray)
    cv2.imshow('laplacian', laplacian)
    cv2.imshow('canny', canny)

    # 等待按键
    if cv2.waitKey(0) & 0xFF == ord('q'):
        cv2.destroyAllWindows()

    # 退出程序
    exit(0)
